
package appvideo;

import appvideo.logica.Proveedor;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class SubMenu_gestionProveedores {
    
    public static void gestionProveedores(){
        //opc_submenu es usada para la seleccion de opciones de este submenu
                                int opc_submenu=0;
                                do{
                                    try{
                                        opc_submenu = ObtenerTeclado.dameEntero("Seleccione opcion:\n1.Alta Proveedor\n2.Baja Proveedor\n3.Modificar Proveedor\n4.Visualizar Proveedores\n5.Lista productos de un proveedor\n6.Buscar un proveedor\n7.Volver Atras"); 
                                        switch(opc_submenu){
                                            case 1://SUBMENU: ALTA PROVEEDOR
                                                String nombre = ObtenerTeclado.dameCadena("Introduzca nombre:" );
                                                String email = ObtenerTeclado.dameCadena("Introduzca email:");
                                                String direccion = ObtenerTeclado.dameCadena("Introduzca direccion:");
                                                
                                                
                                                try{
                                                    int tlf  = ObtenerTeclado.dameEntero("Introduzca tlf:");

                                                    Proveedor provAlta = new Proveedor(nombre, email, direccion, tlf, new Date());
                                                    provAlta.altaProveedor();
                                                    
                                                }catch(NumberFormatException nme){
                                                    System.out.println("Error: Telefono contiene numeros unicamente.");
                                                }catch(Exception e){
                                                    System.out.println(e.getMessage());
                                                }
                                                opc_submenu=0;
                                                break;
                                            case 2: //SUBMENU BAJA PROVEEDOR
                                                try{
                                                    int codBaja = ObtenerTeclado.dameEntero("\nBusqueda Proveedor:\nIntroduzca Codigo(listar previamente si lo desconoce):\nSi necesita volver atras pulse tecla 0");
                                                    if(codBaja>0){
                                                        Proveedor provBaja = Proveedor.buscaProveedor(codBaja);
                                                        if(provBaja!=null){
                                                            provBaja.bajaProveedor();
                                                        }
                                                    }
                                                     opc_submenu=0;
                                                }catch(NumberFormatException nme){
                                                    System.out.println("Error: Codigo contiene numeros unicamente.");
                                                    opc_submenu=0;
                                                }
            
                                                break;
                                            case 3:
                                                //Modificar proveedor
                                                try{
                                                    //La excepcion esta para comprobar que se introduzca un entero
                                                    int codModif = ObtenerTeclado.dameEntero("\nBusqueda Proveedor:\nIntroduzca Codigo(listar previamente si lo desconoce):\nSi necesita volver atras pulse tecla 0");
                                                    if(codModif==0){
                                                        //Si se pulsa 0, vuelve atras.
                                                        opc_submenu=0;
                                                    }else{
                                                        Proveedor provModif = Proveedor.buscaProveedor(codModif);
                                                        if(provModif!=null){
                                                            int opc_modif_prov=0;
                                                            do{
                                                                try{//MENU MODIFICAR DATOS PROVEEDOR
                                                                    opc_modif_prov = ObtenerTeclado.dameEntero("Seleccione Dato a Modificar:\n1.Nombre\n2.Email\n3.Direccion\n4.Telefono"
                                                                    + "\n5.Fecha de Alta\n6.Confirmar(Actualizara todos los campos modificados)\n7.Volver(No se guardaran los datos)");

                                                                    switch(opc_modif_prov){
                                                                        case 1:
                                                                            provModif.setNombre(ObtenerTeclado.dameCadena("Introduzca nuevo Nombre: "));
                                                                            break;
                                                                        case 2:
                                                                            provModif.setEmail(ObtenerTeclado.dameCadena("Introduzca nuevo Email: "));
                                                                            break;
                                                                        case 3:
                                                                            provModif.setDireccion(ObtenerTeclado.dameCadena("Introduzca nueva direccion: "));
                                                                            break;
                                                                        case 4:
                                                                            try{
                                                                                provModif.setTlf(ObtenerTeclado.dameEntero("Introduzca nuevo Telefono: "));
                                                                            }catch(NumberFormatException nme){
                                                                                System.out.println("Debe introducir numeros, no otros simbolos.");
                                                                            }
                                                                            break;
                                                                        case 5:
                                                                            //MODIFICACION DE LA FECHA DE ALTA, IMPONGO EL FORMATO A TRAVES DEL SimpleDateFormat
                                                                            SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd");
                                                                            String stringFecha=ObtenerTeclado.dameCadena("Introduzca nueva fecha(yyyy-MM-dd):");
                                                                            try {
                                                                                Date nuevoDate = dtf.parse(stringFecha);
                                                                                provModif.setfAlta(nuevoDate);
                                                                            } catch (ParseException ex) {
                                                                                System.out.println("No ha introducido el formato requerido para la fecha.");
                                                                            }
                                                                            break;
                                                                        case 6:
                                                                            //CONFIRMACION DE LA MODIFICACION. AHORA ATACO A LA BD 
                                                                            //CON TODO LO MODIFICADO ANTERIORMENTE
                                                                            provModif.modificaProveedor();
                                                                            break;
                                                                        case 7:
                                                                            //Codigo necesario para volver al submenu anterior
                                                                            //Los cambios que hayas hecho hasta el momento no se guardan en la BD
                                                                            opc_submenu=0;
                                                                            break;
                                                                        default:
                                                                            break;
                                                                    }

                                                                }catch(NumberFormatException nme){
                                                                    System.out.println("Error con la opción elegida.");
                                                                    opc_submenu=0;
                                                                }
                                                                //REPITE EL BUCLE MIENTRAS NO SE SELECCIONEN 6 o 7
                                                            }while(opc_modif_prov!= 6 && opc_modif_prov!=7);
                                                        }
                                                    }
                                                }catch(NumberFormatException nme){
                                                    System.out.println("Error: Codigo contiene numeros unicamente.");
                                                    opc_submenu=0;
                                                }
                                                break;
                                            case 4:
                                                //Visualizar proveedores
                                                Proveedor.visualizaProveedores();
                                                //Opcion para volver atras, es una opcional. Podemos querer que no vuelva
                                                //atras despues de visualizar.
                                                opc_submenu=0;
                                                break;
                                            case 5:
                                                //Listar todos los productos adquiridos a un proveedor
                                                //Si introduces 0 vuelves atras y puedes ver los datos de los proveedores
                                                int codProv = ObtenerTeclado.dameEntero("\nBusqueda Proveedor:\nIntroduzca Codigo(listar previamente si lo desconoce):\nSi necesita volver atras pulse tecla 0");
                                                    if(codProv>0){
                                                        Proveedor p = Proveedor.buscaProveedor(codProv);
                                                        if(p!=null){
                                                            //Si me devuelve un proveedor, hazlo lo requerido
                                                            p.visualizaProductosProveedor();
                                                        }
                                                    }
                                                    opc_submenu=0;
                                                    break;
                                            case 6: //BUSCA PROVEEDOR
                                                int codModif = ObtenerTeclado.dameEntero("\nBusqueda Proveedor:\nIntroduzca Codigo(listar previamente si lo desconoce):\nSi necesita volver atras pulse tecla 0");
                                                if(codModif==0){
                                                    //Si se pulsa 0, vuelve atras.
                                                    opc_submenu=0;
                                                }else{
                                                    Proveedor provModif = Proveedor.buscaProveedor(codModif);
                                                    if(provModif!=null){
                                                        System.out.println(provModif.toString());
                                                    }
                                                    opc_submenu=0;
                                                }
                                                break;
                                            case 7://Volver atrás->A menu principal
                                                //Se pone a 0 la opcion del menu superior para no
                                                //salir del todo
                                                main.opc=0;
                                                break;
                                            default:
                                                System.out.println("Error con la opción elegida.");
                                                break;
                                        }
                                    }catch(NumberFormatException nme){
                                        System.out.println("Error con la opción elegida.");
                                    }
                                }while(opc_submenu<1 || opc_submenu>7);
    }
}
